\chapter{Testing}
\label{cha:proof_of_concept_testing}
Dieses Kapitel beschreibt wie der Prototyp getestet wurde. Neben den verwendeten Methoden werden auch die getesteten Browser und deren Versionen genauer erläutert. 

\section{Abgrenzung}
Bereits in der Aufgabenstellung der Bachelorthesis und der späteren Anforderungsanalyse wurde die Methode, wie die Prototyp"=Implementation getestet wird, explizit offen gelassen. Grundsätzlich sind automatisierte Unit Tests mit JavaScript möglich, jedoch schwer im Umfeld einer Browsererweiterung zu implementieren. Zudem erfordern Unit Test eine repräsentativen Testabdeckungsgrad, der im Kontext einer Bachelorthesis nicht zu erreichen wäre. Aus diesen Gründen wird vorerst auf automatisierte Unit Tests verzichtet.

\section{Methoden}
Der Prototyp wird anhand eines Akzeptanztests überprüft. Die Kriterien für den Akzeptanztest leiten sich aus den Akzeptanzkriterien der funktionalen Anforderungen und den Qualitätsanforderungen aus \autoref{cha:anforderungen} ab.

\section{Browser}
Der Akzeptanztest wurde für die Browser Chrome, Safari und Opera unter den Betriebssystemen Windows und Mac OS X durchgeführt. Die nachfolgende \autoref{tbl:browser_kompatibilität} fasst die getesteten Browser in Abhängigkeit des Betriebssystems zusammen. Die \autoref{tbl:browser_versionen} gibt Aufschluss über die Kompatibilität der Erweiterung zu einzelnen Browser Versionen.

\begin{longtable}{l c l c}
\caption{Getestete Browser und Betriebssysteme}\label{tbl:browser_kompatibilität}\\
   \hline
   \multicolumn{2}{c}{Windows 7 64Bit} & \multicolumn{2}{c}{Mac OS X Lion}\\\hline\rowcolor[gray]{0.9}
   Chrome & 17.0.963.83 m & Chrome & 17.0.963.83\\
   Safari & 5.1.4 & Safari & 5.1.4\\\rowcolor[gray]{0.9}
   Opera & 11.61 & Opera & 11.61\\
   \hline
\end{longtable}

\begin{longtable}{l c}
\caption{Kompatibilität einzelner Browser Versionen}\label{tbl:browser_versionen}\\
   \hline
   \textbf{Browser} & \textbf{Version}\\\hline\rowcolor[gray]{0.9}
   Chrome & $\ge 6.0$\\
   Safari & $\ge 5.0.1$\\\rowcolor[gray]{0.9}
   Opera & $\ge 11.00$\\
   \hline
\end{longtable}

Aufgrund der losen Kopplung zwischen der XCommander Library und der \acrshort{api} einzelner Browser, ist die XCommander Erweiterung praktisch unabhängig von einzelnen Browser Versionen. Einzige Voraussetzung für die Kompatibilität ist das generische Erweiterungskonzept. 

Sollte Google, Apple oder Opera in Zukunft ein anderes Erweiterungskonzept für ihre Browser bevorzugen, kann die Kompatibilität der Erweiterung nicht mehr gewährleistet werden.

\section{Akzeptanztest}
\subsection{Funktionale Anforderungen}
\autoref{tab:akzeptanztest_funktionale_anforderungen} zeigt die Auswertung und das Resultat des Akzeptanztests für die funktionalen Anforderungen.

Da gemäss Unterabschnitt \ref{subsubsec:implementation_xcommander_updaten} die automatische Update"=Funktion der Erweiterung noch nicht unterstützt wird, konnte das Akzeptanzkriterium aus der Anforderung \reffrequirement{frq:xcommander_updaten} nicht erfüllt werden.

Die Akzeptanzkriterien der funktionalen Anforderung \reffrequirement{frq:xcommand_installieren} (XCommand installieren) wurde vom Safari Browser nur teilweise erfüllt. Der aktuelle Safari Browser in der Version 5.1 unterstützt die File \acrshort{api} nicht, um lokale Files mittels JavaScript einzulesen. Daher können im Safari, XCommands nur über eine Webseite installiert werden.

\begin{longtable}{l l c c c}
\caption{Akzeptanztest - Funktionale Anforderungen}\label{tab:akzeptanztest_funktionale_anforderungen}\\
   \hline
   \textbf{Anforderung} & \textbf{Name} & \textbf{Chrome} & \textbf{Safari} & \textbf{Opera}\\\hline\rowcolor[gray]{0.9}
   \reffrequirement{frq:xcommander_installieren} & XCommander Installieren & $\surd$ & $\surd$ & $\surd$ \\
   \reffrequirement{frq:xcommander_updaten} & XCommander updaten & - & - & - \\\rowcolor[gray]{0.9}
   \reffrequirement{frq:xcommand_debug} & XCommand debuggen & $\surd$ & $\surd$ & $\surd$ \\
   \reffrequirement{frq:xcommander_messaging} & XCommander Messaging & $\surd$ & $\surd$ & $\surd$ \\\rowcolor[gray]{0.9}
   \reffrequirement{frq:xcommander_xhr} & XCommander XmlHttpRequest & $\surd$ & $\surd$ & $\surd$ \\
   \reffrequirement{frq:xcommander_local_storage} & XCommander Local Storage & $\surd$ & $\surd$ & $\surd$ \\\rowcolor[gray]{0.9}
   \reffrequirement{frq:xcommander_verwalten} & XCommander verwalten & $\surd$ & $\surd$ & $\surd$ \\
   \reffrequirement{frq:xcommand_installieren} & XCommand installieren & $\surd$ & $(\surd)$ & $\surd$ \\\rowcolor[gray]{0.9}
   \reffrequirement{frq:xcommand_deinstallieren} & XCommand deinstallieren & $\surd$ & $\surd$ & $\surd$ \\
   \reffrequirement{frq:xcommand_updaten} & XCommand updaten & $\surd$ & $\surd$ & $\surd$ \\\rowcolor[gray]{0.9}
   \reffrequirement{frq:xcommand_deactivate} & XCommand deaktivieren & $\surd$ & $\surd$ & $\surd$ \\
   \reffrequirement{frq:xcommand_run} & XCommand ausführen & $\surd$ & $\surd$ & $\surd$ \\
   \hline
\end{longtable}

\subsection{Qualitätsanforderungen}
\autoref{tab:akzeptanztest_qualitaetsanforderungen} zeigt die Auswertung und das Resultat des Akzeptanztests für die Qualitätsanforderungen.

Sämtliche Akzeptanzkriterien der Qualitätsanforderungen wurden im Konzept und der Implementation des Prototyps berücksichtigt und umgesetzt. Qualitätsanforderung \refqrequirement{qrq:internationalisierung} - Internationalisierung wurde bei der Prototyp-Implementation vorerst nur für den \gls{parser} berücksichtigt und implementiert.

\begin{longtable}{l l c c c}
\caption{Akzeptanztest - Qualitätsanforderungen}\label{tab:akzeptanztest_qualitaetsanforderungen}\\
   \hline
   \textbf{Anforderung} & \textbf{Name} & \textbf{Chrome} & \textbf{Safari} & \textbf{Opera}\\\hline\rowcolor[gray]{0.9}
   \refqrequirement{qrq:browserunabhängigkeit} & Browserunabhängigkeit & $\surd$ & $\surd$ & $\surd$ \\
   \refqrequirement{qrq:erweiterbarkeit} & Erweiterbarkeit & $\surd$ & $\surd$ & $\surd$ \\\rowcolor[gray]{0.9}
   \refqrequirement{qrq:usability} & Usability & $\surd$ & $\surd$ & $\surd$ \\
   \refqrequirement{qrq:sicherheit} & Sicherheit & $\surd$ & $\surd$ & $\surd$ \\\rowcolor[gray]{0.9}
   \refqrequirement{qrq:internationalisierung} & Internationalisierung & $(\surd)$ & $(\surd)$ & $(\surd)$ \\
   \refqrequirement{qrq:modularisierung} & Modularisierung & $\surd$ & $\surd$ & $\surd$ \\
   \hline
\end{longtable}
%\end{landscape}